/*
 * CTRL_ListaAyudantiasDisponibles.java
 *
 * Created on October 15, 2007, 9:18 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package wasolicitudesfiec.logicacontrol.SolicitarSerAyudante;

import web.util.Constantes;
import entidad.Persona;
import entidad.ayudantias.Solicitudayudantia;
import entidad.ayudantias.TipoAyudantia;
import entidad.ayudantias.TipoAyudantia.TipoAyudantiaEnum;
import hero.interfaces.BnNodeValue;
import java.util.ArrayList;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import wasolicitudesfiec.Ayudantias.SolicitarSerAyudante.ListaAyudantiasDisponibles;
import wasolicitudesfiec.general.MensajeException;
import wasolicitudesfiec.logicacontrol.*;
import wasolicitudesfiec.registros.Rg_AyudantiaDisponible;

/**
 *
 * @author kabad
 */
public class CTRL_ListaAyudantiasDisponibles extends CTRL_Base {

    private ListaAyudantiasDisponibles gui;
    private Solicitudayudantia solicitudAyudantia;

    /** Creates a new instance of CTRL_ListaAyudantiasDisponibles */
    public CTRL_ListaAyudantiasDisponibles(ListaAyudantiasDisponibles gui, FacesContext facesContext) {
        super(facesContext);

        this.gui = gui;

        String instancia;
        instancia = (String) externalContext.getRequestParameterMap().get("instancia");
        if (instancia != null) {
            externalContext.getSessionMap().put("instancia", instancia);

            System.out.println("Instancia init: " + instancia);
        }
    }

    public void inicializar() throws MensajeException {
        Vector<Solicitudayudantia> listaSolicitudesDisponibles;
        ArrayList<Rg_AyudantiaDisponible> listaAyudantiasDisponibles = new ArrayList();
        BnNodeValue actividad;

        try {
            if (!(usrSession != null && prjSession != null)) {
                throw new Exception();
            }
            listaSolicitudesDisponibles = logica.getLogAyudantia().leerSolicitudayudantiaDisponibles();
            TipoAyudantia tipoAyudantia;
            Persona personaProfesor;
            Rg_AyudantiaDisponible ayudantiaDisponible;
            for (Solicitudayudantia solicitud : listaSolicitudesDisponibles) {
                actividad = usrSession.getNode(solicitud.getNombreinstanciaproceso(), Constantes.SolicitarAyudantes.registroEstudiantes);
                if (!(actividad != null &&
                        (actividad.getState() == hero.interfaces.Constants.Nd.READY))) {
                    continue;
                }
                ayudantiaDisponible = new Rg_AyudantiaDisponible();

                tipoAyudantia = logica.leerTipoAyudantia(solicitud);
                personaProfesor = solicitud.getProfesor().getPersona();

                if (tipoAyudantia.getTipo() == TipoAyudantiaEnum.ACADEMICA) {
                    ayudantiaDisponible.setStrTipoAyudantia(tipoAyudantia.getNombre());
                    ayudantiaDisponible.setStrNombreAyudantia(solicitud.getMateria().getNombre());
                } else {
                    ayudantiaDisponible.setStrTipoAyudantia(tipoAyudantia.getNombre());
                    ayudantiaDisponible.setStrNombreAyudantia(solicitud.getAyudantiavaria().getNombre());
                }
                ayudantiaDisponible.setStrNombreInstancia(solicitud.getNombreinstanciaproceso());
                ayudantiaDisponible.setCaducidadSolicitudes(solicitud.getFechaMaxRegistro());

                String convocatoria = logica.getLogAyudantia().generarConvocatoria(solicitud).replaceAll("(\r\n|\r|\n|\n\r)", "\\\\n");
                convocatoria=convocatoria.replaceAll("<br/>", "\\\\n");
                System.out.println("convocatoria " + convocatoria);
                ayudantiaDisponible.setConvocatoria(convocatoria);

                ayudantiaDisponible.setNombreProfesor(personaProfesor.toString());
                listaAyudantiasDisponibles.add(ayudantiaDisponible);
            }
        } catch (MensajeException ex) {
            throw ex;
        } catch (Exception exception) {
            exception.printStackTrace();
            Logger.getLogger(CTRL_ListaAyudantiasDisponibles.class.getName()).log(Level.SEVERE, null, exception);

            throw new MensajeException(Constantes.Mensajes.noInicia);
        }
        gui.getDp_AyudantiasDisponibles().setListaRg_AyudantiaDisponible(listaAyudantiasDisponibles);
    }
}
